function PageB4ReceiveProduct(user, sd, options) {
  this._source = user;
  this._sd = sd;
  this._options = (options) ? options : null;
  
  this._gui = { parent: document.getElementById('whole'),
                content: document.getElementById('container')
              };
  
  this._createElements();
};

PageB4ReceiveProduct.prototype._createElements = function() {
  this._loadData();
};

PageB4ReceiveProduct.prototype._loadData = function() {
  this._mails = null;
  this._retrieveSource();
};

PageB4ReceiveProduct.prototype._verifyData = function() {
  if (this._mails) {
    this._updateElements();
  }
};

PageB4ReceiveProduct.prototype._retrieveSource = function() {
  var _self = this;
  new RequestUtils()._read('mail', null, 'd.rdate = 0', null, null, null, null, function(result, params) { _self._mails = result.data;
                                                                                                           _self._mailData = result;
                                                                                                           _self._verifyData.call(_self);
                                                                                                         }, null);
};

PageB4ReceiveProduct.prototype._updateElements = function() {
  var table, tr, td, unique, _self = this;
  
  DOMUtils.removeChildElements(this._gui.content);
  
  table = document.createElement('table');
  tr = table.insertRow(-1);
  this._gui.content.appendChild(table);
  for (var i = 0, il = this._mails.length; i < il; i++) {
    var mail = this._mails[i];
    
    unique = MiscUtils.unique();
    tr = table.insertRow(-1);
    new GtrMail(i + '_' + unique, tr, mail, null);
    
    input = document.getElementById(i + '_' + unique + '_view');
    input._mail = mail;
    input.onclick = function() { new EditMail(_self._gui.parent, this._mail, function() { location.reload(); }, { now: _self._sd }); }
  }
};

